(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 14.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       158,          7]
NotebookDataLength[     37881,        947]
NotebookOptionsPosition[     34187,        868]
NotebookOutlinePosition[     34580,        884]
CellTagsIndexPosition[     34537,        881]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{

Cell[CellGroupData[{
Cell["Initialization", "Subsection",
 CellChangeTimes->{{3.934411543028784*^9, 
  3.9344115443516912`*^9}},ExpressionUUID->"c48430c9-782a-4986-963d-\
72692d76c75d"],

Cell[BoxData[
 RowBox[{
  RowBox[{"Needs", "/@", 
   RowBox[{"{", "\"\<DatabaseLink`\>\"", "}"}]}], ";"}]], "Input",
 InitializationCell->True,
 CellChangeTimes->{{3.935254730417522*^9, 3.9352547356674747`*^9}, {
   3.945611806309952*^9, 3.945611809036682*^9}, {3.945611885092616*^9, 
   3.945611903341277*^9}, {3.9469418770725594`*^9, 3.946941896241341*^9}, {
   3.946941961239119*^9, 3.946941979359832*^9}, 3.971831147524768*^9},
 CellLabel->"In[19]:=",ExpressionUUID->"0b9b493d-9276-4e5d-8c74-31555e1db818"],

Cell[BoxData[
 RowBox[{
  RowBox[{"(*", 
   RowBox[{
   "Edit", " ", "the", " ", "path", " ", "accordingly", " ", "before", " ", 
    "executing"}], "*)"}], "\[IndentingNewLine]", 
  RowBox[{
   RowBox[{
    RowBox[{"sqlPath", "=", "\"\</Users/shana/data-V/\>\""}], ";"}], "\n", 
   "\[IndentingNewLine]", 
   RowBox[{"(*", 
    RowBox[{
    "Names", " ", "of", " ", "databases", " ", "and", " ", "tables", " ", 
     "you", " ", "want", " ", "to", " ", "access", "\[IndentingNewLine]", 
     "Files", " ", "should", " ", "all", " ", "be", " ", "stored", " ", 
     "under", " ", "the", " ", "directory", " ", "sqlPah", " ", "points", " ",
      "to"}], "*)"}], "\[IndentingNewLine]", 
   RowBox[{
    RowBox[{"schema", "=", 
     RowBox[{"<|", 
      RowBox[{
       RowBox[{"\"\<V-database_3-16c.db\>\"", "->", 
        RowBox[{"Table", "[", 
         RowBox[{
          RowBox[{"\"\<V\>\"", "<>", 
           RowBox[{"ToString", "[", "i", "]"}]}], ",", 
          RowBox[{"{", 
           RowBox[{"i", ",", "1", ",", "4"}], "}"}]}], "]"}]}], ",", 
       "\[IndentingNewLine]", 
       RowBox[{"\"\<V-database_17c-loose.db\>\"", "->", 
        RowBox[{"{", 
         RowBox[{"\"\<V1\>\"", ",", "\"\<V2\>\""}], "}"}]}], ",", 
       "\[IndentingNewLine]", 
       RowBox[{"\"\<V-database_18c-loose.db\>\"", "->", 
        RowBox[{"{", 
         RowBox[{"\"\<V1\>\"", ",", "\"\<V2\>\""}], "}"}]}], ",", 
       "\[IndentingNewLine]", 
       RowBox[{"\"\<V1-database_17a.db\>\"", "->", 
        RowBox[{"{", "\"\<V1\>\"", "}"}]}], ",", "\[IndentingNewLine]", 
       RowBox[{"\"\<V1-database_18a.db\>\"", "->", 
        RowBox[{"{", "\"\<V1\>\"", "}"}]}]}], "|>"}]}], ";"}], 
   "\[IndentingNewLine]", "\[IndentingNewLine]", 
   RowBox[{"(*", 
    RowBox[{"The", " ", "rest", " ", "is", " ", "automatic"}], "*)"}], "\n", "\[IndentingNewLine]", 
   RowBox[{
    RowBox[{"Assert", "[", 
     RowBox[{
      RowBox[{"Length", "[", "schema", "]"}], ">", "0"}], "]"}], ";"}], 
   "\[IndentingNewLine]", "\n", 
   RowBox[{
    RowBox[{"tableDict", "=", 
     RowBox[{"<|", "|>"}]}], ";"}], "\n", 
   RowBox[{
    RowBox[{"aliasDict", "=", 
     RowBox[{"<|", "|>"}]}], ";"}], "\n", "\[IndentingNewLine]", "\[IndentingNewLine]", 
   RowBox[{
    RowBox[{"conn", "=", 
     RowBox[{"OpenSQLConnection", "[", 
      RowBox[{"JDBC", "[", 
       RowBox[{"\"\<SQLite\>\"", ",", "\"\<:memory:\>\""}], "]"}], "]"}]}], 
    ";"}], "\n", "\[IndentingNewLine]", 
   RowBox[{
    RowBox[{"dbNames", "=", 
     RowBox[{"Keys", "[", "schema", "]"}]}], ";"}], "\n", 
   RowBox[{
    RowBox[{"Do", "[", 
     RowBox[{
      RowBox[{
       RowBox[{"sqlName", "=", 
        RowBox[{"dbNames", "[", 
         RowBox[{"[", "i", "]"}], "]"}]}], ";", "\[IndentingNewLine]", 
       RowBox[{"alias", "=", 
        RowBox[{"\"\<db\>\"", "<>", 
         RowBox[{"ToString", "[", "i", "]"}]}]}], ";", "\[IndentingNewLine]", 
       
       RowBox[{
        RowBox[{"aliasDict", "[", "sqlName", "]"}], "=", "alias"}], ";", 
       "\[IndentingNewLine]", 
       RowBox[{"tables", "=", 
        RowBox[{"schema", "[", "sqlName", "]"}]}], ";", "\[IndentingNewLine]", 
       RowBox[{"Scan", "[", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{
            RowBox[{"tableName", "=", "#"}], ";", "\[IndentingNewLine]", 
            RowBox[{"If", "[", 
             RowBox[{
              RowBox[{"KeyExistsQ", "[", 
               RowBox[{"tableDict", ",", "tableName"}], "]"}], ",", 
              RowBox[{"AppendTo", "[", 
               RowBox[{
                RowBox[{"tableDict", "[", "tableName", "]"}], ",", "alias"}], 
               "]"}], ",", 
              RowBox[{
               RowBox[{"tableDict", "[", "tableName", "]"}], "=", 
               RowBox[{"{", "alias", "}"}]}]}], "]"}]}], ")"}], "&"}], ",", 
         "tables"}], "]"}], ";", "\[IndentingNewLine]", 
       RowBox[{"SQLExecute", "[", 
        RowBox[{"conn", ",", "\"\<ATTACH DATABASE ? AS ?\>\"", ",", 
         RowBox[{"{", 
          RowBox[{
           RowBox[{"sqlPath", "<>", "sqlName"}], ",", "alias"}], "}"}]}], 
        "]"}], ";"}], ",", 
      RowBox[{"{", 
       RowBox[{"i", ",", "1", ",", 
        RowBox[{"Length", "[", "dbNames", "]"}]}], "}"}]}], "]"}], ";"}], 
   "\[IndentingNewLine]", "\[IndentingNewLine]", "\n", 
   RowBox[{
    RowBox[{"Scan", "[", 
     RowBox[{
      RowBox[{
       RowBox[{"(", 
        RowBox[{
         RowBox[{"tableName", "=", "#"}], ";", "\[IndentingNewLine]", 
         RowBox[{"aliases", "=", 
          RowBox[{"tableDict", "[", "tableName", "]"}]}], ";", 
         RowBox[{"selectStatements", "=", 
          RowBox[{"Map", "[", 
           RowBox[{
            RowBox[{
             
             RowBox[{"\"\<SELECT * FROM \>\"", "<>", "#", "<>", "\"\<.\>\"", "<>",
               "tableName"}], "&"}], ",", "aliases"}], "]"}]}], ";", 
         "\[IndentingNewLine]", 
         RowBox[{"unionQuery", "=", 
          RowBox[{"StringRiffle", "[", 
           RowBox[{"selectStatements", ",", "\"\< UNION ALL \>\""}], "]"}]}], 
         ";", "\[IndentingNewLine]", 
         RowBox[{"viewName", "=", 
          RowBox[{"\"\<all_\>\"", "<>", "tableName"}]}], ";", 
         RowBox[{"createViewSql", "=", 
          
          RowBox[{"\"\<CREATE TEMPORARY VIEW \>\"", "<>", "viewName", 
           "<>", "\"\< AS \>\"", "<>", "unionQuery"}]}], ";", 
         "\[IndentingNewLine]", 
         RowBox[{"SQLExecute", "[", 
          RowBox[{"conn", ",", "createViewSql"}], "]"}], ";"}], ")"}], "&"}], 
      ",", 
      RowBox[{"Keys", "[", "tableDict", "]"}]}], "]"}], ";"}]}]}]], "Input",
 InitializationCell->True,
 CellChangeTimes->{{3.934411379961253*^9, 3.9344114081224546`*^9}, {
   3.935246803616663*^9, 3.935246852754738*^9}, {3.9456118142085114`*^9, 
   3.945611817103766*^9}, {3.961696546687854*^9, 3.961696548459201*^9}, {
   3.96938119021637*^9, 3.969381192814414*^9}, {3.9712986654221783`*^9, 
   3.971298665532648*^9}, {3.9718006528997173`*^9, 3.9718006899803534`*^9}, {
   3.971800782959276*^9, 3.9718007844882097`*^9}, 3.971800848103937*^9, {
   3.97180106002649*^9, 3.971801138400546*^9}},
 CellLabel->"In[2]:=",ExpressionUUID->"cbcad59a-318f-44af-9787-58f55a8af684"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Main Methods", "Subsection",
 CellChangeTimes->{{3.934411553025949*^9, 3.93441155585863*^9}, 
   3.935258092749826*^9},ExpressionUUID->"b0857a67-0ff1-450c-9b23-\
511578544eb8"],

Cell[CellGroupData[{

Cell["Vn Polynomials", "Subsubsection",
 CellChangeTimes->{{3.957135002843511*^9, 
  3.957135006262994*^9}},ExpressionUUID->"34aee38c-c6aa-4275-8c24-\
53d3cf80aec5"],

Cell[BoxData[{
 RowBox[{
  RowBox[{
   RowBox[{
    RowBox[{"KnotInfo", "[", 
     RowBox[{"n_", ",", "K_"}], "]"}], ":=", 
    RowBox[{"AssociationThread", "[", "\[IndentingNewLine]", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"\"\<SnapPy Name\>\"", ",", " ", "\"\<PD Code\>\"", ",", 
        " ", "\"\<Genus\>\"", ",", 
        " ", "\"\<Degree of Alexander Polynomial\>\"", ",", 
        " ", "\"\<Tightness\>\"", ",", " ", 
        RowBox[{"\"\<V\>\"", "<>", 
         RowBox[{"ToString", "[", "n", "]"}], "<>", "\"\< Polynomial\>\""}]}],
        "}"}], ",", 
      RowBox[{
       RowBox[{"SQLSelect", "[", 
        RowBox[{"conn", ",", 
         RowBox[{"\"\<all_V\>\"", "<>", 
          RowBox[{"ToString", "[", "n", "]"}]}], ",", 
         RowBox[{"{", 
          
          RowBox[{"\"\<\\\"SnapPy Name\\\"\>\"", ",", 
           " ", "\"\<\\\"PD Code\\\"\>\"", ",", " ", "\"\<Genus\>\"", 
           ",", "\"\<\\\"Degree of Alexander Polynomial\\\"\>\"", ",", 
           " ", "\"\<Tightness\>\"", ",", " ", 
           RowBox[{"\"\<\\\"V\>\"", "<>", 
            RowBox[{"ToString", "[", "n", "]"}], 
            "<>", "\"\< Polynomial\\\"\>\""}]}], "}"}], ",", 
         RowBox[{
          RowBox[{"SQLColumn", "[", "\"\<\\\"KnotTheory Name\\\"\>\"", "]"}], 
          "==", 
          RowBox[{"ToString", "[", "K", "]"}]}]}], "]"}], "[", 
       RowBox[{"[", "1", "]"}], "]"}]}], "]"}]}], ";"}], 
  "\[IndentingNewLine]"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{
   RowBox[{
    RowBox[{"SnapPyName", "[", 
     RowBox[{"n_", ",", "K_"}], "]"}], ":=", 
    RowBox[{
     RowBox[{"KnotInfo", "[", 
      RowBox[{"n", ",", "K"}], "]"}], "[", "\"\<SnapPy Name\>\"", "]"}]}], 
   ";"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{
   RowBox[{
    RowBox[{"KnotTable", "[", 
     RowBox[{"n_Integer", ",", "c_Integer"}], "]"}], ":=", 
    RowBox[{"If", "[", 
     RowBox[{
      RowBox[{"c", "<=", "16"}], ",", 
      RowBox[{"Sort", "[", 
       RowBox[{"ToExpression", "/@", 
        RowBox[{"Flatten", "[", "\[IndentingNewLine]", 
         RowBox[{"SQLExecute", "[", 
          RowBox[{"conn", ",", "\[IndentingNewLine]", 
           
           RowBox[{"\"\<\n        SELECT \\\"KnotTheory Name\\\"\n        \
FROM \\\"all_V\>\"", " ", "<>", 
            RowBox[{"ToString", "[", "n", "]"}], 
            "<>", "\"\<\\\"\n        WHERE CAST(\n            \
SUBSTR(\\\"KnotTheory Name\\\", 6, INSTR(\\\"KnotTheory Name\\\", ',') - 6)\n \
           AS INTEGER) = \>\"", "<>", 
            RowBox[{"ToString", "[", "c", "]"}]}]}], "\[IndentingNewLine]", 
          "]"}], "\[IndentingNewLine]", "]"}]}], "]"}], ",", 
      "\[IndentingNewLine]", 
      RowBox[{"Sort", "[", 
       RowBox[{"Flatten", "[", "\[IndentingNewLine]", 
        RowBox[{"SQLExecute", "[", 
         RowBox[{"conn", ",", "\[IndentingNewLine]", 
          
          RowBox[{"\"\<\n        SELECT \\\"SnapPy Name\\\"\n        FROM \
\\\"all_V\>\"", " ", "<>", 
           RowBox[{"ToString", "[", "n", "]"}], 
           "<>", "\"\<\\\"\n        WHERE CAST(\n            \
SUBSTR(\\\"SnapPy Name\\\", 1, LENGTH(\\\"SnapPy Name\\\") - \
LENGTH(LTRIM(\\\"SnapPy Name\\\", '0123456789')))\n            AS INTEGER) = \
\>\"", "<>", 
           RowBox[{"ToString", "[", "c", "]"}]}]}], "\[IndentingNewLine]", 
         "]"}], "\[IndentingNewLine]", "]"}], "]"}]}], "\[IndentingNewLine]", 
     "]"}]}], ";"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{
   RowBox[{
    RowBox[{"Genus", "[", 
     RowBox[{"n_", ",", "K_"}], "]"}], ":=", 
    RowBox[{"ToExpression", "[", 
     RowBox[{
      RowBox[{"SQLSelect", "[", 
       RowBox[{"conn", ",", 
        RowBox[{"\"\<all_V\>\"", "<>", 
         RowBox[{"ToString", "[", "n", "]"}]}], ",", 
        RowBox[{"{", "\"\<Genus\>\"", "}"}], ",", 
        RowBox[{
         RowBox[{"SQLColumn", "[", "\"\<\\\"KnotTheory Name\\\"\>\"", "]"}], "==", 
         RowBox[{"ToString", "[", "K", "]"}]}]}], "]"}], "[", 
      RowBox[{"[", 
       RowBox[{"1", ",", "1"}], "]"}], "]"}], "]"}]}], ";"}], 
  "\[IndentingNewLine]"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{
   RowBox[{
    RowBox[{"AlexDeg", "[", 
     RowBox[{"n_", ",", "K_"}], "]"}], ":=", 
    RowBox[{"ToExpression", "[", 
     RowBox[{
      RowBox[{"SQLSelect", "[", 
       RowBox[{"conn", ",", 
        RowBox[{"\"\<all_V\>\"", "<>", 
         RowBox[{"ToString", "[", "n", "]"}]}], ",", 
        RowBox[{"{", "\"\<\\\"Degree of Alexander Polynomial\\\"\>\"", "}"}], 
        ",", 
        RowBox[{
         RowBox[{"SQLColumn", "[", "\"\<\\\"KnotTheory Name\\\"\>\"", "]"}], "==", 
         RowBox[{"ToString", "[", "K", "]"}]}]}], "]"}], "[", 
      RowBox[{"[", 
       RowBox[{"1", ",", "1"}], "]"}], "]"}], "]"}]}], ";"}], 
  "\[IndentingNewLine]"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{
   RowBox[{
    RowBox[{"TightQ", "[", 
     RowBox[{"n_", ",", "K_"}], "]"}], ":=", 
    RowBox[{
     RowBox[{"ToExpression", "[", 
      RowBox[{
       RowBox[{"SQLSelect", "[", 
        RowBox[{"conn", ",", 
         RowBox[{"\"\<all_V\>\"", "<>", 
          RowBox[{"ToString", "[", "n", "]"}]}], ",", 
         RowBox[{"{", "\"\<Tightness\>\"", "}"}], ",", 
         RowBox[{
          RowBox[{"SQLColumn", "[", "\"\<\\\"KnotTheory Name\\\"\>\"", "]"}], 
          "==", 
          RowBox[{"ToString", "[", "K", "]"}]}]}], "]"}], "[", 
       RowBox[{"[", 
        RowBox[{"1", ",", "1"}], "]"}], "]"}], "]"}], "===", "1"}]}], ";"}], 
  "\[IndentingNewLine]"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{
   RowBox[{
    RowBox[{"V", "[", 
     RowBox[{"n_Integer", ",", "K_"}], "]"}], ":=", 
    RowBox[{"Module", "[", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{
        RowBox[{"vStringL", " ", "=", 
         RowBox[{"SQLSelect", "[", 
          RowBox[{"conn", ",", 
           RowBox[{"\"\<all_V\>\"", "<>", 
            RowBox[{"ToString", "[", "n", "]"}]}], ",", 
           RowBox[{"{", 
            RowBox[{"\"\<\\\"V\>\"", "<>", 
             RowBox[{"ToString", "[", "n", "]"}], 
             "<>", "\"\< Polynomial\\\"\>\""}], "}"}], ",", 
           RowBox[{
            RowBox[{
            "SQLColumn", "[", "\"\<\\\"KnotTheory Name\\\"\>\"", "]"}], "==", 
            
            RowBox[{"ToString", "[", "K", "]"}]}]}], "]"}]}], ",", 
        "vString"}], "}"}], ",", "\[IndentingNewLine]", 
      RowBox[{"If", "[", 
       RowBox[{
        RowBox[{
         RowBox[{"Length", "[", "vStringL", "]"}], " ", "==", "0"}], ",", 
        "\[IndentingNewLine]", "$Failed", ",", "\[IndentingNewLine]", 
        RowBox[{
         RowBox[{"vString", " ", "=", " ", 
          RowBox[{"vStringL", "[", 
           RowBox[{"[", 
            RowBox[{"1", ",", "1"}], "]"}], "]"}]}], ";", 
         "\[IndentingNewLine]", 
         RowBox[{"If", "[", 
          RowBox[{
           RowBox[{
            RowBox[{"vString", " ", "==", " ", "\"\<\>\""}], " ", "||", " ", 
            RowBox[{"StringContainsQ", "[", 
             RowBox[{"vString", ",", " ", 
              RowBox[{"\"\<k\>\"", "|", "\"\<RF\>\"", "|", "\"\<X\>\""}]}], 
             "]"}]}], ",", "\[IndentingNewLine]", "$Failed", ",", 
           "\[IndentingNewLine]", 
           RowBox[{"ToExpression", "[", "vString", "]"}]}], 
          "\[IndentingNewLine]", "]"}]}]}], "]"}]}], "\[IndentingNewLine]", 
     "]"}]}], ";"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{
   RowBox[{"PDFromSQL", "[", 
    RowBox[{"n_", ",", "K_"}], "]"}], ":=", 
   RowBox[{"PD", "@@", 
    RowBox[{"(", 
     RowBox[{
      RowBox[{
       RowBox[{"X", "@@", "#"}], "&"}], "/@", 
      RowBox[{"ToExpression", "[", 
       RowBox[{"StringReplace", "[", 
        RowBox[{
         RowBox[{
          RowBox[{"SQLSelect", "[", 
           RowBox[{"conn", ",", 
            RowBox[{"\"\<all_V\>\"", "<>", 
             RowBox[{"ToString", "[", "n", "]"}]}], ",", 
            RowBox[{"{", "\"\<\\\"PD Code\\\"\>\"", "}"}], ",", 
            RowBox[{
             RowBox[{
             "SQLColumn", "[", "\"\<\\\"KnotTheory Name\\\"\>\"", "]"}], "==", 
             RowBox[{"ToString", "[", "K", "]"}]}]}], "]"}], "[", 
          RowBox[{"[", 
           RowBox[{"1", ",", "1"}], "]"}], "]"}], ",", "\[IndentingNewLine]", 
         
         RowBox[{"{", 
          RowBox[{
           RowBox[{"\"\<[\>\"", "->", " ", "\"\<{\>\""}], ",", " ", 
           RowBox[{"\"\<(\>\"", "->", " ", "\"\<{\>\""}], ",", " ", 
           RowBox[{"\"\<]\>\"", "->", "\"\<}\>\""}], ",", 
           RowBox[{"\"\<)\>\"", "->", "\"\<}\>\""}]}], "}"}]}], "]"}], 
       "]"}]}], ")"}]}]}], ";"}]}], "Input",
 InitializationCell->True,
 CellChangeTimes->{{3.935247102210655*^9, 3.935247123969468*^9}, {
   3.9352472946309147`*^9, 3.935247439061145*^9}, {3.935256582121285*^9, 
   3.935256608120751*^9}, {3.93525672017083*^9, 3.935256732037343*^9}, {
   3.935257406877971*^9, 3.935257410948284*^9}, {3.9352580891712623`*^9, 
   3.935258115538785*^9}, {3.935258220684873*^9, 3.93525831151322*^9}, {
   3.935258368158259*^9, 3.935258405865523*^9}, {3.935259035563596*^9, 
   3.935259168610908*^9}, {3.938426762469646*^9, 3.938426763307939*^9}, {
   3.954697192996792*^9, 3.954697193240056*^9}, {3.958004473906551*^9, 
   3.958004487211871*^9}, {3.958004524414773*^9, 3.958004591227343*^9}, {
   3.958005082938404*^9, 3.958005086252911*^9}, {3.958008232308674*^9, 
   3.958008287223308*^9}, {3.9580083290996237`*^9, 3.958008380279191*^9}, {
   3.958008425379549*^9, 3.9580084293383636`*^9}, {3.958008460362761*^9, 
   3.9580086036524897`*^9}, {3.9580087026678133`*^9, 3.958008798812801*^9}, {
   3.958009433329562*^9, 3.958009439826179*^9}, {3.958009529354027*^9, 
   3.9580095566384974`*^9}, 3.959911186316349*^9, {3.967067940788165*^9, 
   3.967067993088723*^9}, {3.967068060995603*^9, 3.9670680910213137`*^9}, {
   3.967068121790801*^9, 3.9670681225253963`*^9}, 3.967070651811955*^9, {
   3.967070792950899*^9, 3.967070848406642*^9}, {3.9670708824423037`*^9, 
   3.967070946847146*^9}, {3.9693812023917093`*^9, 3.969381233063933*^9}, {
   3.969381725502945*^9, 3.969381725636634*^9}, {3.96938198915024*^9, 
   3.969382010645046*^9}, {3.969382059650984*^9, 3.96938206951712*^9}, {
   3.969382100532572*^9, 3.969382195915297*^9}, {3.9693822276530867`*^9, 
   3.969382229171056*^9}, {3.969382284563471*^9, 3.9693822849571457`*^9}, {
   3.969382522114455*^9, 3.969382651921829*^9}, {3.96938269230828*^9, 
   3.969382696012581*^9}, {3.96945432210851*^9, 3.969454327464078*^9}, {
   3.9718009270387907`*^9, 3.971800927608693*^9}, {3.9718009694697943`*^9, 
   3.9718010148867607`*^9}, {3.9718012601529713`*^9, 3.971801283751623*^9}, {
   3.9718016545175943`*^9, 3.971801684073368*^9}, {3.9718019499321527`*^9, 
   3.97180197215063*^9}, {3.971802100705846*^9, 3.971802172765675*^9}, {
   3.971802299661667*^9, 3.9718023092328453`*^9}, {3.9718024245846148`*^9, 
   3.971802434539147*^9}, {3.971802472947225*^9, 3.9718024931465807`*^9}, {
   3.971802616836011*^9, 3.9718026496224937`*^9}, 3.971816917603306*^9, {
   3.971817167539453*^9, 3.9718171781000967`*^9}, {3.9718172314570427`*^9, 
   3.97181725033212*^9}, {3.971817285795003*^9, 3.9718173178052464`*^9}, {
   3.971817372096883*^9, 3.971817372285198*^9}, {3.971818314325636*^9, 
   3.971818320801323*^9}},
 CellLabel->"In[11]:=",ExpressionUUID->"7a263abf-f8f7-47fd-836f-92f21ca98970"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell["Example Codes", "Subsection",
 CellChangeTimes->{{3.969384668441546*^9, 
  3.969384670571681*^9}},ExpressionUUID->"0f28c58a-58c0-4181-b39e-\
b55bb21547f3"],

Cell[CellGroupData[{

Cell["\<\
KnotTable[n,c] gives the table of knots with c crossings whose Vn polynomial \
are saved in the database\
\>", "Subsubsection",
 CellChangeTimes->{{3.971816802844288*^9, 
  3.971816858137442*^9}},ExpressionUUID->"9d2e1314-6dc0-4aa4-be32-\
854949fa46dd"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"KnotTable", "[", 
  RowBox[{"2", ",", "9"}], "]"}]], "Input",
 CellChangeTimes->{{3.969382470782559*^9, 3.969382484982295*^9}, {
  3.971816792172056*^9, 3.971816794894019*^9}},
 CellLabel->"In[20]:=",ExpressionUUID->"749dbddd-2895-4365-97ab-1c4954024bc8"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "1"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "2"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "3"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "4"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "5"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "6"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "7"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "8"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "9"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "10"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "11"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "12"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "13"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "14"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "15"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "16"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "17"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "18"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "19"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "20"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "21"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "22"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "23"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "24"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "25"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "26"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "27"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "28"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "29"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "30"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "31"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "32"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "33"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "34"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "35"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "36"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "37"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "38"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "39"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "40"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "41"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "42"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "43"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "44"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "45"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "46"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "47"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "48"}], "]"}], ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"9", ",", "49"}], "]"}]}], "}"}]], "Output",
 CellChangeTimes->{
  3.969382482429262*^9, {3.969382518100245*^9, 3.969382535304289*^9}, {
   3.969382643627418*^9, 3.969382655393121*^9}, 3.969382700178307*^9, 
   3.97180162884011*^9, 3.971802301010841*^9, {3.971802481152231*^9, 
   3.9718024965098667`*^9}, 3.971816795371909*^9, 3.971831155575158*^9},
 CellLabel->"Out[20]=",ExpressionUUID->"69a19770-d7ba-42d7-9f65-90df8b8748c9"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell["Time of generating knot tables", "Subsubsection",
 CellChangeTimes->{{3.971816880414586*^9, 
  3.9718168856659813`*^9}},ExpressionUUID->"3221075b-1465-44d3-a500-\
da02f2ef5c53"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"AbsoluteTiming", "@", 
  RowBox[{"Length", "[", 
   RowBox[{"KnotTable", "[", 
    RowBox[{"2", ",", "16"}], "]"}], "]"}], " "}]], "Input",
 CellChangeTimes->{{3.971801696275736*^9, 3.9718017107543783`*^9}, {
  3.971801996637165*^9, 3.971802010508492*^9}, {3.9718021979362507`*^9, 
  3.9718021980712147`*^9}, {3.971816870721631*^9, 
  3.971816877971592*^9}},ExpressionUUID->"6ce248ac-0258-404c-8166-\
9c37740a804a"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"6.791806`", ",", "1388705"}], "}"}]], "Output",
 CellChangeTimes->{
  3.971801702591298*^9, 3.971801940072811*^9, {3.971801995361965*^9, 
   3.971802012648457*^9}, 3.971802195888723*^9, 3.971802246317746*^9, 
   3.971802512696553*^9},
 CellLabel->"Out[37]=",ExpressionUUID->"2f4cb77f-2100-4242-bf0c-f20405140eba"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"AbsoluteTiming", "@", 
  RowBox[{"Length", "[", 
   RowBox[{"KnotTable", "[", 
    RowBox[{"1", ",", "17"}], "]"}], "]"}]}]], "Input",
 CellChangeTimes->{{3.971802530402677*^9, 3.971802536839209*^9}},
 CellLabel->"In[39]:=",ExpressionUUID->"55169800-5e51-47ff-b58c-5e5dc5cab1fe"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"4.952464`", ",", "2073802"}], "}"}]], "Output",
 CellChangeTimes->{{3.9718025330481367`*^9, 3.971802542070982*^9}},
 CellLabel->"Out[39]=",ExpressionUUID->"a9f814a0-fc75-4e27-96c7-407b57d5f5a2"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell["\<\
KnotInfo[n, Knot[..]] gives the information of a given knot in String \
formats:
SnapPy Name, PD Code, Genus, Degree of Alexander Polynomial, Tightness and Vn \
polynomial.\
\>", "Subsubsection",
 CellChangeTimes->{{3.971816898909059*^9, 3.9718169141398993`*^9}, {
  3.97181697186742*^9, 3.971817030829049*^9}, {3.9718183740263653`*^9, 
  3.971818385907628*^9}},ExpressionUUID->"0dffb5f2-df41-4b68-913e-\
4a9b2a85b3f2"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"KnotInfo", "[", 
  RowBox[{"1", ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"12", ",", "NonAlternating", ",", "1"}], "]"}]}], "]"}]], "Input",\

 CellChangeTimes->{{3.9352591141030283`*^9, 3.935259121696347*^9}, {
  3.945611838511839*^9, 3.945611841149658*^9}},
 CellLabel->"In[20]:=",ExpressionUUID->"2e6ceb67-b554-48a3-9de9-3c85f7376b92"],

Cell[BoxData[
 RowBox[{"\[LeftAssociation]", 
  RowBox[{
   RowBox[{"\<\"SnapPy Name\"\>", "\[Rule]", "\<\"12n1\"\>"}], ",", 
   RowBox[{"\<\"PD Code\"\>", 
    "\[Rule]", "\<\"[(4, 2, 5, 1), (2, 9, 3, 10), (8, 3, 9, 4), (10, 6, 11, \
5), (15, 7, 16, 6), (7, 15, 8, 14), (11, 16, 12, 17), (19, 12, 20, 13), (13, \
20, 14, 21), (17, 23, 18, 22), (23, 19, 24, 18), (21, 1, 22, 24)]\"\>"}], ",", 
   RowBox[{"\<\"Genus\"\>", "\[Rule]", "3"}], ",", 
   RowBox[{"\<\"Degree of Alexander Polynomial\"\>", "\[Rule]", "6"}], ",", 
   RowBox[{"\<\"Tightness\"\>", "\[Rule]", "1"}], ",", 
   RowBox[{"\<\"V1 Polynomial\"\>", 
    "\[Rule]", "\<\"225 + 28/q^6 + 158/q^4 + 278/q^2 + 60*q^2 + 2*q^4 + \
t^(-6) - 1/(q^3*t^5) - 5/(q*t^5) - (4*q)/t^5 + 22/t^4 + 6/(q^4*t^4) + \
16/(q^2*t^4) + (7*q^2)/t^4 - 13/(q^5*t^3) - 43/(q^3*t^3) - 65/(q*t^3) - \
(41*q)/t^3 - (6*q^3)/t^3 + 123/t^2 + 12/(q^6*t^2) + 74/(q^4*t^2) + \
137/(q^2*t^2) + (37*q^2)/t^2 + (2*q^4)/t^2 - 4/(q^7*t) - 67/(q^5*t) - \
193/(q^3*t) - 235/(q*t) - (120*q)/t - (15*q^3)/t - (4*t)/q^7 - (67*t)/q^5 - \
(193*t)/q^3 - (235*t)/q - 120*q*t - 15*q^3*t + 123*t^2 + (12*t^2)/q^6 + \
(74*t^2)/q^4 + (137*t^2)/q^2 + 37*q^2*t^2 + 2*q^4*t^2 - (13*t^3)/q^5 - \
(43*t^3)/q^3 - (65*t^3)/q - 41*q*t^3 - 6*q^3*t^3 + 22*t^4 + (6*t^4)/q^4 + \
(16*t^4)/q^2 + 7*q^2*t^4 - t^5/q^3 - (5*t^5)/q - 4*q*t^5 + t^6\"\>"}]}], 
  "\[RightAssociation]"}]], "Output",
 CellChangeTimes->{{3.935259118261725*^9, 3.9352591708381166`*^9}, {
   3.94561183479354*^9, 3.9456118417585983`*^9}, 3.946941934208873*^9, {
   3.9469419828772593`*^9, 3.9469419976071873`*^9}, {3.967068114582262*^9, 
   3.967068125383506*^9}},
 CellLabel->"Out[20]=",ExpressionUUID->"afa98f9b-5f7d-4c27-bcb1-92da35bcfc17"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell["\<\
Miscellaneous methods for obtaining processed information of knots
Input is the same as in KnotInfo[n, K]\
\>", "Subsubsection",
 CellChangeTimes->{{3.971817460873907*^9, 3.9718174787411823`*^9}, {
  3.97181833124649*^9, 3.9718184064797077`*^9}, {3.971818438451476*^9, 
  3.971818458566524*^9}},ExpressionUUID->"685c731f-f8a4-4680-a9b2-\
1a2bf51de6e9"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"PDFromSQL", "[", 
  RowBox[{"2", ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"12", ",", "NonAlternating", ",", "1"}], "]"}]}], "]"}]], "Input",\

 CellChangeTimes->{{3.9670709631133413`*^9, 3.9670709841139307`*^9}, {
  3.971817155045455*^9, 3.971817155186387*^9}, {3.971817191069138*^9, 
  3.9718171912483873`*^9}},ExpressionUUID->"f0f79dd0-5826-4987-a6b4-\
8aaeb17aa4ae"],

Cell[BoxData[
 RowBox[{"PD", "[", 
  RowBox[{
   RowBox[{"X", "[", 
    RowBox[{"4", ",", "2", ",", "5", ",", "1"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"2", ",", "9", ",", "3", ",", "10"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"8", ",", "3", ",", "9", ",", "4"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"10", ",", "6", ",", "11", ",", "5"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"15", ",", "7", ",", "16", ",", "6"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"7", ",", "15", ",", "8", ",", "14"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"11", ",", "16", ",", "12", ",", "17"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"19", ",", "12", ",", "20", ",", "13"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"13", ",", "20", ",", "14", ",", "21"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"17", ",", "23", ",", "18", ",", "22"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"23", ",", "19", ",", "24", ",", "18"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"21", ",", "1", ",", "22", ",", "24"}], "]"}]}], "]"}]], "Output",\

 CellChangeTimes->{{3.9670709672560596`*^9, 3.967070984714834*^9}},
 CellLabel->"Out[50]=",ExpressionUUID->"c1b7d08b-224d-4fa3-ae72-4e581165d33d"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"PDFromSQL", "[", 
  RowBox[{"1", ",", "\"\<17nh_6239211\>\""}], "]"}]], "Input",
 CellChangeTimes->{{3.971817133648281*^9, 3.9718171572834044`*^9}, {
  3.971817187891738*^9, 3.971817188083535*^9}},
 CellLabel->"In[63]:=",ExpressionUUID->"6e71bb8f-e725-4f79-8df3-f6a76ed5f300"],

Cell[BoxData[
 RowBox[{"PD", "[", 
  RowBox[{
   RowBox[{"X", "[", 
    RowBox[{"2", ",", "20", ",", "3", ",", "19"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"4", ",", "21", ",", "5", ",", "22"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"6", ",", "12", ",", "7", ",", "11"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"8", ",", "4", ",", "9", ",", "3"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"10", ",", "1", ",", "11", ",", "2"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"12", ",", "6", ",", "13", ",", "5"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"13", ",", "30", ",", "14", ",", "31"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"15", ",", "29", ",", "16", ",", "28"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"17", ",", "26", ",", "18", ",", "27"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"18", ",", "10", ",", "19", ",", "9"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"20", ",", "7", ",", "21", ",", "8"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"23", ",", "14", ",", "24", ",", "15"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"25", ",", "1", ",", "26", ",", "34"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"27", ",", "32", ",", "28", ",", "33"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"29", ",", "24", ",", "30", ",", "25"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"31", ",", "23", ",", "32", ",", "22"}], "]"}], ",", 
   RowBox[{"X", "[", 
    RowBox[{"33", ",", "16", ",", "34", ",", "17"}], "]"}]}], "]"}]], "Output",\

 CellChangeTimes->{{3.9718171448349323`*^9, 3.971817157777306*^9}, 
   3.9718171883282347`*^9},
 CellLabel->"Out[63]=",ExpressionUUID->"40eb9439-b282-4893-884d-436e7c00b2f1"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Genus", "[", 
  RowBox[{"1", ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"12", ",", "NonAlternating", ",", "1"}], "]"}]}], "]"}]], "Input",\

 CellChangeTimes->{{3.935258414110869*^9, 3.935258417726548*^9}, {
  3.971818431419931*^9, 3.971818434796907*^9}},
 CellLabel->"In[81]:=",ExpressionUUID->"b9153678-4cc1-45de-91fe-2e00d1faca49"],

Cell[BoxData["3"], "Output",
 CellChangeTimes->{3.935258417959572*^9, 3.946941936983734*^9, 
  3.971818435173064*^9},
 CellLabel->"Out[81]=",ExpressionUUID->"3eb9f8c8-64d6-4677-9c89-cc0a9ccef159"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"AlexDeg", "[", 
  RowBox[{"1", ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"12", ",", "NonAlternating", ",", "146"}], "]"}]}], 
  "]"}]], "Input",
 CellChangeTimes->{{3.935258272913721*^9, 3.93525827904217*^9}, {
  3.935258314293294*^9, 3.935258341361923*^9}, {3.93525841052264*^9, 
  3.9352584113336983`*^9}, {3.971818490057871*^9, 3.971818490299038*^9}},
 CellLabel->"In[83]:=",ExpressionUUID->"b8370fb5-a83e-44fc-9c88-693f824ca15b"],

Cell[BoxData["4"], "Output",
 CellChangeTimes->{{3.9352582749746027`*^9, 3.935258279291113*^9}, {
   3.93525831552065*^9, 3.935258341659226*^9}, 3.935258411600483*^9, 
   3.946941936003764*^9, 3.971818490708441*^9},
 CellLabel->"Out[83]=",ExpressionUUID->"1c921169-69b8-4b20-abc9-1a09eb4c89b3"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"TightQ", "[", 
  RowBox[{"1", ",", 
   RowBox[{"Knot", "[", 
    RowBox[{"4", ",", "1"}], "]"}]}], "]"}]], "Input",
 CellChangeTimes->{{3.935258435278652*^9, 3.9352584378375053`*^9}, {
  3.9718184879749107`*^9, 3.9718184882137337`*^9}},
 CellLabel->"In[82]:=",ExpressionUUID->"142da557-0be3-4ab8-ae64-ce0079e411f7"],

Cell[BoxData["True"], "Output",
 CellChangeTimes->{3.935258438125064*^9, 3.946941938180441*^9, 
  3.971818326279318*^9, 3.971818488810795*^9},
 CellLabel->"Out[82]=",ExpressionUUID->"01a05524-4722-44fe-a649-aa8a94cddc71"]
}, Open  ]]
}, Open  ]]
}, Open  ]]
},
WindowSize->{979, 771},
WindowMargins->{{445, Automatic}, {Automatic, 51}},
FrontEndVersion->"14.3 for Mac OS X ARM (64-bit) (July 8, 2025)",
StyleDefinitions->"Default.nb",
ExpressionUUID->"3f5827fc-b569-416a-a0c7-b48e2707a880"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[CellGroupData[{
Cell[580, 22, 164, 3, 53, "Subsection",ExpressionUUID->"c48430c9-782a-4986-963d-72692d76c75d"],
Cell[747, 27, 510, 9, 45, "Input",ExpressionUUID->"0b9b493d-9276-4e5d-8c74-31555e1db818",
 InitializationCell->True],
Cell[1260, 38, 6212, 148, 821, "Input",ExpressionUUID->"cbcad59a-318f-44af-9787-58f55a8af684",
 InitializationCell->True]
}, Open  ]],
Cell[CellGroupData[{
Cell[7509, 191, 182, 3, 53, "Subsection",ExpressionUUID->"b0857a67-0ff1-450c-9b23-511578544eb8"],
Cell[CellGroupData[{
Cell[7716, 198, 165, 3, 43, "Subsubsection",ExpressionUUID->"34aee38c-c6aa-4275-8c24-53d3cf80aec5"],
Cell[7884, 203, 11366, 256, 1332, "Input",ExpressionUUID->"7a263abf-f8f7-47fd-836f-92f21ca98970",
 InitializationCell->True]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[19299, 465, 161, 3, 53, "Subsection",ExpressionUUID->"0f28c58a-58c0-4181-b39e-b55bb21547f3"],
Cell[CellGroupData[{
Cell[19485, 472, 263, 6, 43, "Subsubsection",ExpressionUUID->"9d2e1314-6dc0-4aa4-be32-854949fa46dd"],
Cell[CellGroupData[{
Cell[19773, 482, 279, 5, 29, "Input",ExpressionUUID->"749dbddd-2895-4365-97ab-1c4954024bc8"],
Cell[20055, 489, 3761, 106, 154, "Output",ExpressionUUID->"69a19770-d7ba-42d7-9f65-90df8b8748c9"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[23865, 601, 183, 3, 43, "Subsubsection",ExpressionUUID->"3221075b-1465-44d3-a500-da02f2ef5c53"],
Cell[CellGroupData[{
Cell[24073, 608, 439, 9, 29, "Input",ExpressionUUID->"6ce248ac-0258-404c-8166-9c37740a804a"],
Cell[24515, 619, 353, 7, 33, "Output",ExpressionUUID->"2f4cb77f-2100-4242-bf0c-f20405140eba"]
}, Open  ]],
Cell[CellGroupData[{
Cell[24905, 631, 303, 6, 29, "Input",ExpressionUUID->"55169800-5e51-47ff-b58c-5e5dc5cab1fe"],
Cell[25211, 639, 234, 4, 33, "Output",ExpressionUUID->"a9f814a0-fc75-4e27-96c7-407b57d5f5a2"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[25494, 649, 429, 9, 68, "Subsubsection",ExpressionUUID->"0dffb5f2-df41-4b68-913e-4a9b2a85b3f2"],
Cell[CellGroupData[{
Cell[25948, 662, 363, 8, 29, "Input",ExpressionUUID->"2e6ceb67-b554-48a3-9de9-3c85f7376b92"],
Cell[26314, 672, 1713, 27, 237, "Output",ExpressionUUID->"afa98f9b-5f7d-4c27-bcb1-92da35bcfc17"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[28076, 705, 362, 7, 68, "Subsubsection",ExpressionUUID->"685c731f-f8a4-4680-a9b2-1a2bf51de6e9"],
Cell[CellGroupData[{
Cell[28463, 716, 395, 9, 29, "Input",ExpressionUUID->"f0f79dd0-5826-4987-a6b4-8aaeb17aa4ae"],
Cell[28861, 727, 1246, 29, 53, "Output",ExpressionUUID->"c1b7d08b-224d-4fa3-ae72-4e581165d33d"]
}, Open  ]],
Cell[CellGroupData[{
Cell[30144, 761, 300, 5, 29, "Input",ExpressionUUID->"6e71bb8f-e725-4f79-8df3-f6a76ed5f300"],
Cell[30447, 768, 1714, 40, 74, "Output",ExpressionUUID->"40eb9439-b282-4893-884d-436e7c00b2f1"]
}, Open  ]],
Cell[CellGroupData[{
Cell[32198, 813, 358, 8, 29, "Input",ExpressionUUID->"b9153678-4cc1-45de-91fe-2e00d1faca49"],
Cell[32559, 823, 196, 3, 33, "Output",ExpressionUUID->"3eb9f8c8-64d6-4677-9c89-cc0a9ccef159"]
}, Open  ]],
Cell[CellGroupData[{
Cell[32792, 831, 458, 9, 29, "Input",ExpressionUUID->"b8370fb5-a83e-44fc-9c88-693f824ca15b"],
Cell[33253, 842, 294, 4, 33, "Output",ExpressionUUID->"1c921169-69b8-4b20-abc9-1a09eb4c89b3"]
}, Open  ]],
Cell[CellGroupData[{
Cell[33584, 851, 339, 7, 29, "Input",ExpressionUUID->"142da557-0be3-4ab8-ae64-ce0079e411f7"],
Cell[33926, 860, 221, 3, 33, "Output",ExpressionUUID->"01a05524-4722-44fe-a649-aa8a94cddc71"]
}, Open  ]]
}, Open  ]]
}, Open  ]]
}
]
*)

